1
ハードウェアからソフトウェアへのマッピング:コンピュート能力バージョン
AI021Lesson 5
00:00

コンピュート能力(CC)は、 仮想アーキテクチャ (PTX)と 実アーキテクチャ (SASS/バイナリ)の間をつなぐバージョン管理のブリッジとして機能します。開発者は nvcc を用いて、デスクトップ/サーバー向けプラットフォームから組み込みプラットフォームまで、さまざまなターゲットに設定します。対応するオペレーティングシステムモデルとしては Linux 64ビット(LP64) または Windows 64ビット(LLP64)があります。

1. 仮想アーキテクチャと実アーキテクチャ

CUDAツールキットは、最新の2つの主要なバージョンのGPUアーキテクチャをサポートしています。その内容は 表29:コンピュート能力による機能サポート(7.5~12.x)に記載されています。マッピングは、以下のようなフラグを使用して定義されます: nvcc --generate-code arch=compute_80,code=sm_90 prog.cu。将来のターゲット向けには、 nvcc -arch=sm_100 や特殊なバリエーションである nvcc -arch=sm_100a が使用されます。

2. マクロ階層

コンパイラは __CUDA_ARCH__ を使ってコードの分岐を行います。 マクロ __CUDA_ARCH__ は、デバイスコード(例: )のみで定義されます。 __device____global__)でのみ有効です。より細かい制御は __CUDA_ARCH_SPECIFIC__ および __CUDA_ARCH_FAMILY_SPECIFIC__によって提供されます。特定の機能(例: 分散共有メモリ または特定の NaNペイロード)は、 コンピュート能力9.0以上 または コンピュート能力10.0以降があります。

3. 数値の限界と制約

精度はコンピュート能力(CC)によって異なります。たとえば、サブノーマル処理により $2^{-16382} \approx 3.36 \cdot 10^{-4932}$ が保証されます。ターゲットとなるCCバージョンに基づいて厳格に適用されるハードウェア制限として CUDA_DEVICE_MAX_COPY_CONNECTIONS=16.maxnreg PTXディレクティブ が存在します。

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>